package com.example.demo.web;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.example.demo.bean.Menu;

/**
 * @author 作者 grq
 * @version 创建时间：2018年5月25日 上午8:53:45
 */
@SuppressWarnings("unchecked")
@Controller
@RequestMapping("/admin")
public class AdminController extends SysBaseController {
	private static Logger log = LoggerFactory.getLogger(AdminController.class);
	@Resource
	JdbcTemplate jdbcTemplate;


	@PostConstruct
	public void setBasePath() {
		try {
			log.info("系统路径和名称初始化工作");
			servletContext.setAttribute("proPath", servletContext.getContextPath());
			//List<Menu> query = jdbcTemplate.query("select * from t_menu", new BeanPropertyRowMapper(Menu.class));
			//System.out.println("AdminController.getALL()");
			//for (Menu menu : query) {
			//	System.out.println(menu);
			//}
		} catch (Exception e) {
			log.info("系统路径和名称初始化失败");
		}
	}

	/****************
	 * 一下内容是测试 jdbcTemplate
	 ***********************************************/
//	@Resource
//	JdbcTemplate jdbcTemplate;

	/**
	 * 但是eclipse提示不能解析成一种类型，也就是说没有找到这个类，没有这个jar包。我百度了下，都在写怎么怎么使用这个类， 却没有人介绍这个类是在哪个包。
	 * 我用的spring是4.x的，而书上的是spring3.2版本的，我查看了两个版本的api，发现3.2
	 * 版本中有ParameterizedBeanPropertyRowMapper
	 * 类，而4.x版本中没有这个类，后才查到4.x中用BeanPropertyRowMapper这个类
	 * ，不知道是不是取代了，因为用的比较少，有没有大神特别清楚的
	 * 
	 * @return
	 */
	@RequestMapping("/742")
	@ResponseBody
	public Object getALL() {
		// List<YmFam> query = jdbcTemplate.query("select * from ym_fam", new
		// BeanPropertyRowMapper(YmFam.class));
		System.out.println("AdminController.getALL()");
		return "";
	}

	@RequestMapping(value = "/mergeModel")
	public ModelAndView mergeModel(Model model) {
		System.out.println("AdminController.mergeModel()");
		model.addAttribute("a", "a");// ①添加模型数据
		ModelAndView mv = new ModelAndView("success");
		mv.addObject("a", "update");// ②在视图渲染之前更新③处同名模型数据
		model.addAttribute("a", "new");// ③修改①处同名模型数据
		// 视图页面的a将显示为"update" 而不是"new"
		return mv;
	}

}
